Fix some packaging logic in path sources
Currently the packaging logic depends on the old recursive nature of path
sources for a few points:
* Discovery of a git repository of a package.
* Filtering out of sibling packages for only including the right set of files.
For a non-recursive path source (now essentially the default) we can no longer
assume that we have a listing of all packages. Subsequently this logic was
tweaked to allow:
* Instead of looking for packages at the root of a repo, we instead look for a
Cargo.toml at the root of a git repository.
* We keep track of all Cargo.toml files found in a repository and prune out all
files which appear to be ancestors of that package.